Computer systems coupled to a data communications network, such as the Internet, allow for the exchange of a wide variety of information between users of such computer systems. One popular use of computer networks, such as the Internet, allows users to operate client communications software, known as a web browser, to communicate with remote computer systems, known as web servers, in order to browse web pages on the world wide web. The world wide web is generally a collection of web server computer systems that each operates web server software that communicates using a number of different data communications protocols and data formats, to allow each user's browser to make web page requests to the web servers. In response to these web page requests, web servers obtain (e.g., from storage, or via dynamic generation) the requested web pages and serve those pages back to each user's web browser for viewing by the user.
Many applications running on an application server communicate with a client device through a web-based interface using, for example, the Hypertext Transfer Protocol (“HTTP”). Such application servers may need to maintain state, meaning that they may need the ability to recognize requests from the same client in order to save information about the client from one request to another. The server may maintain a session for each client that makes requests, so that the server will send the client Web pages based upon the information in previous requests from the same client. One example is a newspaper Web site that charges users for each article that the user reads. The newspaper application needs to remember which articles the user has previously read in order not to charge the user more than once for a particular article. Another example is a Web shopping site having a shopping cart application for storing the goods that the user wishes to buy. The shopping cart application needs to ensure that, as the user browses through the site's Web pages, the shopping cart retains the goods the user has placed there.
It is well known that HTTP is a stateless protocol, which means that an HTTP server handles each request from a client independently from all other requests from the same client. Therefore, a number of techniques have been developed in order to add state to the HTTP protocol. Examples are “cookies” altering URLs to include encoded session data, and various user authentication protocols.